Français Virtuose

Meta description:

The character infuses their fists with Life energy. While this effect is active, their Punch action gains the Life action tag and deals additional Biologic damage.

  • Tags:

    Action de vieDégâts biologiques
  • Name:

    aLifeWeapon

  • Displayed name:

    Arme de vie

  • Description:

    Vous faites couler l'énergie vitale dans tout ce qui vous sert à frapper, poings, griffes ou lames : chacun de vos coups porte une décharge qui ronge la chair.

  • Cast description:

    | PA: vAP.string | TdR: vCD.strings | | :---: | :---: | | **Flux: vFluxOrCost.string ➞ vFluxCost.string** | **Portée: vRange.string** | Sur un test de **vTest.string** réussi **RM vMR.string** [1d20]: Pendant vDuration.string, vos armes, naturelles ou non, sont chargées d'énergie vitale : leurs actions gagnent le tag **Action de vie** et infligent vDamage.string dégâts biologiques supplémentaires.

  • Condition:

    assert(character.sFlux.current >= vFluxCost.value, [[Vous n'avez pas assez de Flux.]])
  • AP cost:

    2

  • Cooldown:

    5

  • Flux cost:

    apMod(vAP)*cdMod(vCD)*targetMod(1,0)*puncMod(vDuration,4)*selfMod*effect(vDamage*40,60)
  • Variables:

    vDuration = NumberVariable([[vDuration]], [[Durée]], [[5]], [[60]], [[5]])
    vDuration.valueDisplay.value = [[ self .. " s" ]]
    vDamage = NumberVariable([[vDamage]], [[Dés de dégâts]], [[1]], [[10]], [[1]])
    vDamage.valueDisplay.value = [[ self .. "d4" ]]
    vRange = ListVariable([[vRange]], [[Portée]], {[[selfMod]]}, {[[Soi]]})
    vTest = ListVariable([[vTest]], [[Test]], {[[character.sVigor]]}, {[[Vigueur]]})
    vMR = StatVariable([[vMR]], [[vTest]])
  • On used script:

    character.sFlux:changeCurrent(-vFluxCost.value)
    
  • On post script:

    if (success) then
        action.currentCD.value = vCD.value
    end
    
  • Type:

    1

  • Action effects:

    • Use case:

      1

    • Name:

      Arme de vie

    • Description:

    • Script:

      if character:has([[mLifeWeapon]]) then
          character.mLifeWeapon:delete()
      end
      effect = character:createEffect([[mLifeWeapon]])
      effect.displayName:set([[Arme de vie]])
      effect.description:set([[Vos armes, naturelles ou non, sont chargées d'énergie vitale : leurs actions deviennent des actions de vie et infligent {{vDamage.string}} dégâts biologiques supplémentaires.]])
      effect.duration:set({{vDuration.value}})
      effect.script:set([=[lifeWeaponText = [[<br/><br/>**Arme de vie :** inflige {{vDamage.string}} dégâts biologiques supplémentaires.]]
      lifeWeaponUndo = ""
      
      function lifeWeaponApply(act, path)
          if not act:tagsContain([[lifeAction]]) then
              act:addTag([[lifeAction]], [[Action de vie]])
              lifeWeaponUndo = lifeWeaponUndo .. "pcall(function() " .. path .. ":removeTag('lifeAction') end)\n"
          end
          act.castDescription:_add(lifeWeaponText)
          lifeWeaponUndo = lifeWeaponUndo .. "pcall(function() " .. path .. ".castDescription:_replace('" .. lifeWeaponText .. "', '') end)\n"
      end
      
      for _, act in pairs(character.actions) do
          if act.item == nil and act:tagsContain([[naturalWeapon]]) then
              lifeWeaponApply(act, "character." .. act.name)
          end
      end
      
      for key, value in pairs(character) do
          if type(key) == "string" and string.sub(key, 1, 1) == "i" and type(value) == "table" and value.actions ~= nil then
              for _, act in pairs(value.actions) do
                  if act:tagsContain([[weapon]]) or act:tagsContain([[naturalWeapon]]) then
                      lifeWeaponApply(act, "character." .. key .. "." .. act.name)
                  end
              end
          end
      end
      
      modifier.undoScript:_set(lifeWeaponUndo)]=])
      effect:activate()
    • Variables: